This invention relates to cryptography configuration, more particularly, a method and apparatus for controlling the use of cryptography such that products utilizing these controls may be exported in accordance with United States export laws, and/or imported into other countries that place additional restrictions on the use of cryptography.
There are many circumstances where the distribution or the use of encryption software is regulated the government. In some countries, the strength of encryption that can be of is regulated without any restrictions on distribution of the encryption software within the country. For example, in the United States, companies are free to distribute any type of encryption software developed within the country for use by United States citizens. Furthermore, United States allows unrestricted importation of encryption technology. However, exporting of a certain strength encryption from the United States is regulated. In other countries, such as France, the strength of encryption that can be used, distributed, or imported is tightly regulated.
In case where exportation of encryption software is restricted, permissible exportable encryption software are usually limited to specific algorithms that use key sizes which are weaker than a particular size. Previously, encryption software has generally been an integral part of a software application. Therefore, to accommodate the varying degrees of permitted encryption levels, several versions of the same application are typically created; one version that provides strong encryption by those who are allowed unrestricted use, and one or more versions that use weaker encryption for those customers whose use is restricted. In many cases, one single weaker version is created to avoid the expense of creating and maintaining multiple versions of the same application.
One reason that applications distributed under these restricted rules have been required to include encryption modules as an integral part of the software, rather than as a separate module that can be plugged into the application, is to prevent an encryption module that supports strong encryption from being plugged into an application and used in a country where encryption is restricted, and thereby enabling strong encryption with that application.
Exportable/export strength encryption refers to encryption algorithms and key sizes that provide relatively weak (i.e., easy to defeat) protection of information. Presently, the United States government allows general purpose encryption products to be exported from the United States to other countries only if those products utilize approved encryption algorithms and key sizes that are weaker than a certain measure. General purpose encryption is an application of encryption that does not limit the type or size of the data being encrypted. The United States government places more restrictions on software that can encrypt any kind of data than it does on software that limits the type and size of the data being encrypted. SSL and S/MIME are considered to be general purpose encryption protocols because they do not place any limits on the type or size of the data being encrypted.
By contrast, special purpose encryption is an encryption application that limits the type and size of the data being encrypted. The United States government will sometimes give export permission for stronger encryption algorithms if they are limited in use to a specific purpose and type of data (strong encryption defined as encryption algorithms and key sizes that are stronger (i.e., harder to defeat) than those that the United States government usually allows to be exported for general purpose encryption). The SET protocol is an example of an encryption protocol that was designed to encrypt special purpose data for purposes of performing financial transactions only.
Recently, standards have been developed that define the interfaces between application software and modules that provide encryption. The purpose of these standards is to facilitate the use of Smart Cards and other hardware encryption devices. By defining a standard interface, and allowing encryption modules to be plugged into applications, any encryption module can be used with any application without having to write special software to integrate each module with each application.
The advent of these new standards presents a problem for application developers since applications that support pluggable encryption modules will be difficult or impossible to distribute under the current varying government regulations. In order to obtain the benefits of standards for pluggable encryption modules, an approach is necessary that satisfies governments by way of ensuring that their various levels of restrictions will be enforced. Such an approach will allow the application to be distributed separately from any encryption modules that it may use, but still allow the application to restrict the use of encryption to the permissible level.
One approach has been developed by Microsoft for their Crypto API (CAPI) system. Applications that use CAPI may only load encryption plugin modules that have been digitally signed by Microsoft. Microsoft will only sign a module once the developer of the module has agreed to abide by the governmental restrictions when distributing the module.
However, this approach poses several new problems. First, it requires a legal agreement between Microsoft and all developers of encryption modules, which can be expensive and time consuming. Another problem with the CAPI system is that it does not allow the application to access stronger encryption algorithms that may otherwise be available in the encryption plugin for those cases where only special purpose encryption is being performed for higher level of encryption transactions, and stronger encryption may be used legally. Some applications that would benefit from or require this type of access are: Secured Socket layer (which are exportable cipher suites that have 40-bit secret keys still use 128-bit RC2 or RC4 encryption, where the 40 bits of the 128-bit key are secret while the remaining 88 bits are not.); Special purpose encryption protocols such as SET (these protocols limit the scope and the size of the data that they encrypt, so that most governments allow them to use much stronger encryption algorithms and key sizes than would be allowed for general purpose encryption); and encryption of key material (generally, when key material is being encrypted, strong algorithms and larger key sizes can be legally used).
As previously discussed, because the level of permissible exportable cryptography varies depending upon the importing country, different versions of a single application are necessary. Also, these different versions of the same application differ in languages used in the manuals and in the help files that are part of the product. In the past, a separate version of the single application was developed for each market, embodying the legally marketable cryptographic policies, for sale and use of the application in the target market. Each of these different versions had to be separately built, tested, localized (translated into the local languages), and supported. The cost of these operations is considerably greater than if there was only one single version of the application to serve all the markets. Having a single application for all these markets can also reduce development and testing time, therefore, shorting the time between development and testing of a new application to marketing and sale.
As discussed above, to address the multiple-version issue, some manufacturers and developers only make and sell products that contain no cryptography, while others only make and sell products that contain only the weaker exportable forms of cryptography, the latter foregoing making stronger cryptography available inside the United States (where stronger cryptography is not subject to export regulations). There are also manufacturers and developers that make separate version of the same program for each of the differing markets, and bear the expense and time-to-market cost associated with making and supporting multiple versions of the same application/product.
With any of the aforementioned approaches, many customers including banks and financial institutions find the weaker level of security offered as exportable general purpose encryption to be unacceptable for financial transactions. Additionally, building separate programs substantially increases time and expenses in production, quality testing, and support for the products.
In view of the foregoing, in accordance with the present invention, policy filters are provided in which an application is limited to accessing only those algorithms in an encryption module that are indicated in the policy filters, even if stronger encryption algorithms are available in the encryption module. The policy filter in accordance with the present invention allows anyone to develop a cryptographic plugin module without the need to have legal agreements between the application or API developers and the crypto module developers.
Moreover, the policy filters in accordance with the present invention allow separate controls to be used for the different APIs, Protocols, and Services in a system, so that the unique needs of each market can be met. The policy filters in accordance with the present invention are provided as a part of a system that includes cryptographic functionality. The cryptographic functionality includes information indicative of the cryptographic policies such as the various levels of allowable encryption between the different countries. The system including cryptographic functionality could be an operating system or an application platform such as the Netscape ONE platform as it exists in Netscape Communicator(copyright) or SuiteSpot(copyright) servers. These systems have cryptographic APIs, Protocols, and Services that are made available to layered applications. For further background information on layered applications, see U.S. Pat. No. 5,657,390 issued on Aug. 12, 1997, assigned to Netscape Corporation, the assignee of the present application.
Moreover, in accordance with another embodiment of the present invention, there is provided a cryptographic policy file including a cryptographic policy module. The cryptographic policy module, which is part of an application, accesses the cryptographic policy file when the application is executed and performs several validity verifications on the cryptographic policy file to ensure that the cryptographic policy file is legitimate and is being used in the market for which it was intended. If the cryptographic policy module determines that the cryptographic policy file passes these tests, the cryptographic policy module then enables or disables each of the possible forms of encryption which the application can request according to the contents of the cryptographic policy file.
Each of the program""s cryptographic applications, for example, SSL, S/MIME, and PKCS #12, provides a uniform interface for turning each of its capabilities on or off, and for setting numeric parameters (e.g., key sizes). Also, each of these capabilities is pre-configured to a default xe2x80x9coffxe2x80x9d or xe2x80x9cminimal securityxe2x80x9d state, and remains in that state until re-configured by the cryptographic policy module according to the contents of the cryptographic policy file when the application is first executed. Accordingly, a separate cryptographic policy file is provided for each market. Therefore, a single program can legally be used and sold in each of the aforementioned markets with varying levels of supportable encryption, and will provide the forms of encryption that are legally appropriate to each market according to the cryptographic policy file supplied to the specific market.
These and other features and advantages of the present invention will be understood upon consideration of the following detailed description of the invention and the accompanying drawings.